loadrt and2 count=1
loadrt near
addf and2.0 servo-thread
addf near.0 servo-thread
setp near.0.scale 1.01

# load components
########################################################################

loadrt logic names=logic-and personality=0x102
addf logic-and servo-thread

# load a summing compnent for adding spindle lift and Z compensation
loadrt scaled_s32_sums
addf scaled-s32-sums.0 servo-thread

loadusr -Wn z_level_compensation z_level_compensation
# method parameter must be one of nearest(2), linear(1), cubic (0)
setp z_level_compensation.fade-height 0.0
setp z_level_compensation.method 1

loadusr simulate_probe

#net spindle-speed-limited  =>  spindle.0.speed-out-rps => spindle.0.speed-in

# the unlink pin commands are only used, because they are connected 
# in core_sim.hal and we use this file to simulate
unlinkp iocontrol.0.tool-change
unlinkp iocontrol.0.tool-changed
unlinkp iocontrol.0.tool-prep-number

net tool-change      hal_manualtoolchange.change   <=  iocontrol.0.tool-change 
net tool-changed     hal_manualtoolchange.changed  <=  iocontrol.0.tool-changed
net tool-prep-number hal_manualtoolchange.number   <=  iocontrol.0.tool-prep-number

# ---setup spindle control signals---
net spindle-vel-cmd        =>  spindle.0.speed-out
net spindle-at-speed       =>  spindle.0.at-speed  
net spindle-brake          <=  spindle.0.brake
net spindle-index-enable  <=>  spindle.0.index-enable

net spindle-cmd      spindle.0.speed-out-rps => near.0.in2
net spindle-cmd      spindle.0.speed-in near.0.in1
net at_speed         near.0.out => and2.0.in1
net forward          spindle.0.forward => and2.0.in0
#net at_speed_fwd     spindle.0.at-speed <= and2.0.out
#net at_speed_fwd     qtdragon.hal_led_atspeed

net spindle-vel-cmd        =>  spindle.0.speed-out
net spindle-vel-cmd => qtdragon.lcdnumber  

## external offsets for spindle pause function
##################################################
#net eoffset-clear     qtdragon.eoffset-clear
net eoffset-spindle-count   <= qtdragon.eoffset-spindle-count 

net spindle-pause    qtdragon.spindle-inhibit => spindle.0.inhibit

net eoffset-clear    axis.z.eoffset-clear
net eoffset-counts   axis.z.eoffset-counts
setp axis.z.eoffset-scale .001
net eoffset-total          axis.z.eoffset
setp axis.z.eoffset-enable True     

## Z level compensation
####################################################
net eoffset-clr2            z_level_compensation.clear      => logic-and.in-01
net xpos-cmd                z_level_compensation.x-pos      <= axis.x.pos-cmd
net ypos-cmd                z_level_compensation.y-pos      <= axis.y.pos-cmd
net zpos-cmd                z_level_compensation.z-pos      <= axis.z.pos-cmd
net z_compensation_on       z_level_compensation.enable-in  <= qtdragon.comp-on
net eoffset-zlevel-count    z_level_compensation.counts     => qtdragon.eoffset-zlevel-count

net eoffset-spindle-count   scaled-s32-sums.0.in0
net eoffset-zlevel-count    scaled-s32-sums.0.in1       qtdragon.eoffset-value
setp scaled-s32-sums.0.scale0 1000
net eoffset-counts          scaled-s32-sums.0.out-s


net mpg-sig           axis.x.jog-counts       axis.y.jog-counts  axis.z.jog-counts   axis.a.jog-counts  qtdragon.mpg-in  qtdragon.MPG-s  

net jogSelectx        axis.x.jog-enable      qtdragon.jog.wheel.x
net jogSelecty        axis.y.jog-enable      qtdragon.jog.wheel.y
net jogSelectz        axis.z.jog-enable      qtdragon.jog.wheel.z
net jogSelecta        axis.a.jog-enable     qtdragon.jog.wheel.a

net jogIncrement      qtdragon.jog.wheel.incement
net jogIncrement      axis.x.jog-scale       axis.y.jog-scale      axis.z.jog-scale    axis.a.jog-scale 

net btn_probesim     motion.probe-input    qtdragon.probesim_button   qtdragon.led-probe   

loadusr -Wn numstr python3 numstr.py
net line motion.program-line => numstr.in => qtdragon.line_number
